const User = require('../model/user');
const { jwtVerify } = require('../utils/index')


// 自定义中间件，需token权限
module.exports = async function (ctx, next) {
    let token = ctx.request.headers['authorization'];
    try {
        if (!token) {
            return ctx.body = { status: 400, msg: '未传入token' }
        } else {  // 有token就验证
            const result = jwtVerify(token)
            
            const user = await User.findOne({
                where:{
                    id:result.id
                }
            })
            if (user) {
                ctx.request.user_id = result.id;
                ctx.request.token = token;
            }
            else {
                return ctx.body = { status: 401, msg: '登录过期' }
            }
        }
        // 其他情况默认啥也不干,传递给下个中间件
        await next()
    } catch (error) {
        return ctx.body = { status: 401, msg: '登录过期' }
    }

}